package aufgabe_04;

// Klasse BiboTest
class BiboTest {
	public static void main(String[] args) {
		ProfessorAccess p = new ProfessorAccess();
		StudentAccess s = new StudentAccess();
		System.out.println("\n\nDer Professor stellt Dokumente ins Netz\n");
		// Es folgen die Use Cases des Professors
		// Use Cases einstellen und holen
		p.einstellen(new Doku());
		p.einstellen(new Doku());
		System.out.println("\n\nDer Professor holt ein Dokument\n");
		System.out.println("Pruefungstext1: " + p.holen(1));
		System.out.println("\n\nDer Student holt ein Dokument\n");
		System.out.println("Pruefungstext2: " + s.holen(2));
		System.out.println("\nDer Professor aendert\n");
		// Use Case aendern
		p.aendern("neuer Pruefungstext1", 1);
		// Use Case aendern - Fehlerfall als Alternativablauf:
		// Zugriff auf nicht vorhandenes Dokument
		p.aendern("neuer Pruefungstext4", 4);
		System.out.println("\n\nDer Student holt\n");
		// Use Case holen fuer Student
		System.out.println("Pruefungstext1: " + s.holen(1));
		// Use Case holen - Fehlerfall als Alternativablauf:
		// Zugriff auf nicht vorhandenes Dokument
		System.out.println(s.holen(0));
		System.out.println("\n\nJetzt werden die Threads gestartet \n");
		Thread profRef = new Thread(new ParallelProfessorAccess());
		Thread studRef = new Thread(new ParallelStudentAccess());
		// Starten der beiden Threads
		profRef.start();
		studRef.start();
		// Warten, bis der ParallelProfessorAccess-Thread fertig ist
		try {
			profRef.join();
		} catch (InterruptedException e) {
			System.out.println(e.getMessage());
		}
		System.out.println("\nParallelProfessorAccess-Thread ist fertig");
	}
}